package modeloUsuario;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

/**
 * Operaciones necesarias para registrarse, darse de baja, e identificarse
 * como usuario para realizar los procesos.
 *
 * @author Ronald Carroza Riquelme.
 */
@Stateless(name = "UsuarioEjbRemote", mappedName = "UsuarioEjbRemote")
public class UsuarioEjb implements UsuarioEjbRemote {

    /**
     * Conexion con la unidad de persistencia
     */
    @PersistenceContext(unitName = "JPADB1")
    private EntityManager entityManager;

    /**
     * Constructor vacio necesario.
     *
     */
    public UsuarioEjb() {

    }

    /** {@inheritDoc} */
    public Usuario buscarUsuario(String usuario, String pwd) {
        String sql =
                "select u from" + Usuario.class.getName()
                        + "u where u.nombre_usuario = '" + usuario + "' and"
                        + "u.pass = '" + pwd + "'";
        Query query = entityManager.createQuery(sql);
        Usuario usu = (Usuario) query.getSingleResult();
        return usu;
    }

    /** {@inheritDoc} */
    public void agregarUsuario(Usuario u) {
        entityManager.persist(u);
    }

    /** {@inheritDoc} */
    public void elimUsuario(String nomUsuario) {
        Usuario u = entityManager.find(Usuario.class, nomUsuario);
        entityManager.remove(u);
    }

    /** {@inheritDoc} */
    public void modificarUsuario(Usuario u) {
        Usuario usu = entityManager.find(Usuario.class, u.getNomUsu());
        usu.setNombre(u.getNombre());
        usu.setNomUsu(u.getNomUsu());
        usu.setApellido(u.getApellido());
        usu.setPass(u.getPass());
    }
}
